package com.cbg.es.repository;

import com.cbg.es.entity.EsTable;
import com.shuyuwl.core.repository.DaoRepository;
import org.springframework.data.jpa.repository.Modifying;
import org.springframework.data.jpa.repository.Query;
import org.springframework.stereotype.Repository;

import java.util.List;

/**
 * ES表备份 repository
 *
 * @author wangjuzheng
 * @since 2019-10-16
 */
@Repository
public interface IEsTableRepository extends DaoRepository<EsTable, Long> {

    /**
     * 获取启用状态下的表信息并排序
     *
     * @param status 状态
     * @return 表信息
     */
    List<EsTable> findByStatusOrderBySortAsc(Byte status);

    /**
     * 获取未删除的表信息并排序
     *
     * @param status 状态
     * @return 表信息
     */
    List<EsTable> findByStatusLessThanOrderBySortAsc(Byte status);

    /**
     * 获取启用状态下的基础表详情
     *
     * @param id     基础表id
     * @param status 状态
     * @return 基础表详情
     */
    EsTable findByIdAndStatus(Long id, Byte status);

    /**
     * 获取未删除的基础表详情
     *
     * @param id     id
     * @param status 状态
     * @return 基础表详情
     */
    EsTable findByIdAndStatusLessThan(Long id, Byte status);

    /**
     * 获取未删除的基础表详情
     *
     * @param tableNameAlias 表显示名
     * @param status         状态
     * @return 基础表详情
     */
    EsTable findByTableNameAliasAndStatusLessThan(String tableNameAlias, Byte status);

    /**
     * 批量更新状态
     *
     * @param ids    id集合
     * @param status 状态
     */
    @Modifying
    @Query("update EsTable set status =?2 where  id in ?1")
    void updateStatus(List<Long> ids, Byte status);

    /**
     * 获取最大的排序号
     *
     * @param status 状态
     * @return 排序号
     */
    @Query("select max(sort)from EsTable where status <?1")
    Integer getMaxSort(Byte status);
}
